package a_doubleWrite;

/**
 * 27. 移除元素
 * 给你一个数组 nums 和一个值 val，你需要 原地 移除所有数值等于 val 的元素，并返回移除后数组的新长度。
 *
 * 不要使用额外的数组空间，你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
 *
 * 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
 * @author: luolidong
 * @create: 2021-07-19 15:41
 * @version: 1.0
 */
public class L27 {
    public int removeElement(int[] nums, int val) {
        if(nums.length==0) return 0;
        int l=0,r=nums.length-1;
        while (l<=r){
            while (l<=r&&nums[l]!=val){
                l++;
            }
            while (l<=r&&nums[r]==val){
                r--;
            }
            if(l<=r){
                int temp=nums[l];
                nums[l]=nums[r];
                nums[r]=temp;
            }
        }
        return l;
    }
}
